CREATE TABLE Activite (
  ACT_Code VARCHAR(8) NOT NULL,
  ACT_Libelle VARCHAR(45) NULL,
  ACT_Etat BIT NULL,
  ACT_Utilisateur VARCHAR(10) NULL,
  ACT_DateCreationModif DATETIME NULL,
  PRIMARY KEY(ACT_Code)
)
TYPE=InnoDB;

CREATE TABLE Adresse (
  ADR_Code INTEGER NOT NULL,
  ADR_Libelle VARCHAR(45) NULL,
  ADR_NumeroVoie INTEGER NULL,
  ADR_TypeVoie VARCHAR(10) NULL,
  ADR_NomVoie VARCHAR(45) NULL,
  ADR_Complement1 VARCHAR(45) NULL,
  ADR_Complement2 VARCHAR(45) NULL,
  ADR_CP VARCHAR(8) NULL,
  ADR_Ville VARCHAR(45) NULL,
  ADR_Pays VARCHAR(20) NULL,
  ADR_TelephoneFixe VARCHAR(20) NULL,
  ADR_TelephoneMobile VARCHAR(20) NULL,
  ADR_Email VARCHAR(45) NULL,
  PRIMARY KEY(ADR_Code)
);

CREATE TABLE Amortissement (
  AMO_Code INTEGER NOT NULL,
  AMO_Libelle VARCHAR(45) NULL,
  PRIMARY KEY(AMO_Code)
);

CREATE TABLE Auxiliaire (
  AUX_Code INTEGER NOT NULL,
  AUX_Libelle VARCHAR(255) NULL,
  AUX_Compte VARCHAR(8) NULL,
  PRIMARY KEY(AUX_Code)
);

CREATE TABLE Banque (
  BAN_Code VARCHAR(20) NOT NULL,
  BAN_Guichet CHAR(5) NULL,
  BAN_Cle CHAR(2) NULL,
  BAN_Domiciliation VARCHAR(45) NULL,
  BAN_Titulaire VARCHAR(45) NULL,
  BAN_Adresse INTEGER NOT NULL,
  BAN_Banque CHAR(5) NULL,
  BAN_Compte CHAR(11) NULL,
  PRIMARY KEY(BAN_Code, BAN_Adresse),
  INDEX Banque_FKIndex1(BAN_Adresse)
);

CREATE TABLE Budget (
  BUD_Code VARCHAR(8) NOT NULL,
  BUD_MontantN NUMERIC(10,2) NULL,
  BUD_Realise NUMERIC(10,2) NULL,
  BUD_MontantN1 NUMERIC(10,2) NULL,
  BUD_Libelle VARCHAR(45) NULL,
  PRIMARY KEY(BUD_Code)
);

CREATE TABLE Classe (
  CLA_Code INTEGER NOT NULL,
  CLA_Libelle VARCHAR(45) NULL,
  PRIMARY KEY(CLA_Code)
);

CREATE TABLE Compte (
  COM_Code VARCHAR(8) NOT NULL,
  COM_Classe INTEGER NOT NULL,
  COM_TVA INTEGER NOT NULL,
  COM_Adresse INTEGER NOT NULL,
  COM_Etat INTEGER NOT NULL,
  COM_Auxiliaire INTEGER NOT NULL,
  COM_Activite VARCHAR(8) NOT NULL,
  COM_Budget VARCHAR(8) NOT NULL,
  COM_Libelle VARCHAR(45) NULL,
  COM_Centralisation BIT NULL,
  COM_Lettrage BIT NULL,
  COM_Auxiliare VARCHAR(10) NULL,
  COM_Utilisateur VARCHAR(10) NULL,
  PRIMARY KEY(COM_Code, COM_Classe, COM_TVA, COM_Adresse, COM_Etat, COM_Auxiliaire, COM_Activite, COM_Budget),
  INDEX Compte_FKIndex1(COM_TVA),
  INDEX Compte_FKIndex2(COM_Adresse),
  INDEX Compte_FKIndex3(COM_Classe),
  INDEX Compte_FKIndex7(COM_Activite),
  INDEX Compte_FKIndex8(COM_Etat),
  INDEX Compte_FKIndex9(COM_Auxiliaire),
  INDEX Compte_FKIndex8(COM_Budget)
);

CREATE TABLE Configuration (
  CON_Code INTEGER NOT NULL,
  CON_Son VARCHAR(255) NULL,
  CON_Memo VARCHAR(45) NULL,
  CON_ImageFond VARCHAR(255) NULL,
  CON_CheminInstall VARCHAR(255) NULL,
  PRIMARY KEY(CON_Code)
);

CREATE TABLE Devise (
  DEV_Code VARCHAR(6) NOT NULL,
  DEV_Devise VARCHAR(45) NULL,
  DEV_Pays VARCHAR(20) NULL,
  DEV_Cours NUMERIC(10,5) NULL,
  DEV_Date DATETIME NULL,
  PRIMARY KEY(DEV_Code)
);

CREATE TABLE Dossier (
  DOS_Code INTEGER NOT NULL,
  DOS_Configuration INTEGER NOT NULL,
  DOS_Utilisateur VARCHAR(10) NOT NULL,
  DOS_Adresse INTEGER NOT NULL,
  DOS_DateCreation DATETIME NULL,
  DOS_Sauvegarde DATETIME NULL,
  DOS_DateMaJour DATETIME NULL,
  DOS_Association VARCHAR(45) NULL,
  DOS_Federation VARCHAR(45) NULL,
  DOS_CheminBase VARCHAR(255) NULL,
  PRIMARY KEY(DOS_Code, DOS_Configuration, DOS_Utilisateur, DOS_Adresse),
  INDEX Dossier_FKIndex1(DOS_Configuration),
  INDEX Dossier_FKIndex3(DOS_Utilisateur),
  INDEX Dossier_FKIndex3(DOS_Adresse)
);

CREATE TABLE Ecriture (
  ECR_Id INTEGER NOT NULL,
  ECR_Activite VARCHAR(8) NOT NULL,
  ECR_Devise VARCHAR(6) NOT NULL,
  ECR_Reglement VARCHAR(10) NOT NULL,
  ECR_Journal VARCHAR(4) NOT NULL,
  Compte_COM_Budget VARCHAR(8) NOT NULL,
  Compte_COM_Activite VARCHAR(8) NOT NULL,
  Compte_COM_Auxiliaire INTEGER NOT NULL,
  Compte_COM_Etat INTEGER NOT NULL,
  Compte_COM_Adresse INTEGER NOT NULL,
  Compte_COM_TVA INTEGER NOT NULL,
  Compte_COM_Classe INTEGER NOT NULL,
  ECR_Date DATETIME NULL,
  ECR_DateEcheance DATETIME NULL,
  ECR_Reference VARCHAR(20) NULL,
  ECR_Ligne INTEGER NULL,
  ECR_Compte VARCHAR(8) NOT NULL,
  ECR_Quantite NUMERIC(10,3) NULL DEFAULT 0,
  ECR_Poids NUMERIC(10,3) NULL DEFAULT 0,
  ECR_Pointage BIT NULL,
  ECR_Lettrage VARCHAR(5) NULL,
  ECR_Libelle VARCHAR(45) NULL,
  ECR_Sens BIT NULL,
  ECR_Montant NUMERIC(10,2) NULL,
  PRIMARY KEY(ECR_Id, ECR_Activite, ECR_Devise, ECR_Reglement, ECR_Journal, Compte_COM_Budget, Compte_COM_Activite, Compte_COM_Auxiliaire, Compte_COM_Etat, Compte_COM_Adresse, Compte_COM_TVA, Compte_COM_Classe, ECR_Compte),
  INDEX Ecriture_FKIndex1(ECR_Reglement),
  INDEX Ecriture_FKIndex2(ECR_Activite),
  INDEX Ecriture_FKIndex3(ECR_Devise),
  INDEX Ecriture_FKIndex4(ECR_Journal, ECR_Devise),
  INDEX Ecriture_FKIndex5(ECR_Compte, Compte_COM_Classe, Compte_COM_TVA, Compte_COM_Adresse, Compte_COM_Etat, Compte_COM_Auxiliaire, Compte_COM_Activite, Compte_COM_Budget)
);

CREATE TABLE Etat (
  ETA_Code INTEGER NOT NULL,
  ETA_Libelle VARCHAR(45) NULL,
  PRIMARY KEY(ETA_Code)
);

CREATE TABLE Exercice (
  EXC_Code INTEGER NOT NULL,
  EXE_Utilisateur VARCHAR(10) NOT NULL,
  EXE_Periode VARCHAR(8) NOT NULL,
  EXC_Debut DATETIME NULL,
  EXC_Fin DATETIME NULL,
  EXC_Cloture DATETIME NULL,
  PRIMARY KEY(EXC_Code, EXE_Utilisateur, EXE_Periode),
  INDEX Exercice_FKIndex1(EXE_Periode, EXE_Utilisateur)
);

CREATE TABLE Immobilisation (
  IMM_Code VARCHAR(20) NOT NULL,
  IMM_Amortissement INTEGER NOT NULL,
  IMM_Description VARCHAR(45) NULL,
  IMM_Quantite INTEGER NULL,
  IMM_Emplacement VARCHAR(45) NULL,
  IMM_DateAcquisition DATETIME NULL,
  IMM_ValAcquisition NUMERIC(10,2) NULL,
  IMM_Marque VARCHAR(45) NULL,
  IMM_Fournisseur VARCHAR(45) NULL,
  IMM_NumSerie VARCHAR(20) NULL,
  IMM_Garentie VARCHAR(20) NULL,
  PRIMARY KEY(IMM_Code, IMM_Amortissement),
  INDEX Immobilisation_FKIndex2(IMM_Amortissement)
);

CREATE TABLE Journal (
  JOU_Code VARCHAR(4) NOT NULL,
  JOU_Devise VARCHAR(6) NOT NULL,
  JOU_Libelle VARCHAR(45) NULL,
  JOU_Type INTEGER NULL,
  JOU_Etat BIT NULL,
  JOU_DateCreationModif DATETIME NULL,
  JOU_Utilisateur VARCHAR(10) NULL,
  PRIMARY KEY(JOU_Code, JOU_Devise),
  INDEX Journal_FKIndex1(JOU_Devise)
);

CREATE TABLE Periode (
  PER_Code VARCHAR(8) NOT NULL,
  PER_Utilisateur VARCHAR(10) NOT NULL,
  PER_Libelle VARCHAR(45) NULL,
  PER_Debut DATETIME NULL,
  PER_Fin DATETIME NULL,
  PER_Arrete BIT NULL,
  PRIMARY KEY(PER_Code, PER_Utilisateur),
  INDEX Periode_FKIndex1(PER_Utilisateur)
);

CREATE TABLE Reglement (
  REG_Code VARCHAR(10) NOT NULL,
  REG_Libelle VARCHAR(45) NULL,
  REG_Echeance INTEGER NULL DEFAULT 0,
  PRIMARY KEY(REG_Code)
);

CREATE TABLE Saisie (
  SAI_Code INTEGER NOT NULL,
  SAI_Devise VARCHAR(6) NOT NULL,
  SAI_Journal VARCHAR(4) NOT NULL,
  SAI_Libelle VARCHAR(45) NULL,
  PRIMARY KEY(SAI_Code, SAI_Devise, SAI_Journal),
  INDEX Saisie_FKIndex1(SAI_Journal, SAI_Devise)
);

CREATE TABLE TVA (
  TVA_Code INTEGER NOT NULL,
  TVA_Libelle VARCHAR(45) NULL,
  TVA_Taux NUMERIC(5,2) NULL,
  TVA_DebutApplication DATETIME NULL,
  TVA_FinApplication DATETIME NULL,
  PRIMARY KEY(TVA_Code)
);

CREATE TABLE Utilisateur (
  UTI_Code VARCHAR(10) NOT NULL,
  UTI_Libelle VARCHAR(45) NULL,
  UTI_DroitsArrete BIT NULL,
  UTI_DroitsSaisie BIT NULL,
  UTI_DroitsSuppression BIT NULL,
  UTI_DroitsMenu BIT NULL,
  PRIMARY KEY(UTI_Code)
);


